package server.business.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import server.business.pojo.PatientBackInformation;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 针对表【patient_back_information(患者退血信息表)】的数据库操作Service
 *
 * @Author 赵越
 * @Time 2022-08-03
 */
public interface PatientBackInformationService extends IService<PatientBackInformation> {

    /**
     * 查询所有患者退血信息
     *
     * @return 返回患者退血信息列表
     */
    List<PatientBackInformation> findAll();

    /**
     * 保存患者退血信息
     *
     * @param patientBackInformation 患者退血信息包装类
     */
    void savePatientBackInformation(PatientBackInformation patientBackInformation);

    /**
     * 根据退血单号得到患者退血信息
     *
     * @param number 退血单号
     * @return 返回患者退血信息
     */
    PatientBackInformation getBackInformationByNumber(String number);

    /**
     * 根据退血单号设置退血信息
     *
     * @param number                 退血单号
     * @param patientBackInformation 退血信息
     */
    void setInformationByNumber(String number, PatientBackInformation patientBackInformation);

    /**
     * 根据退血单号设置审核人、审核人工号、审核时间
     *
     * @param number        退血单号
     * @param auditor       审核人
     * @param auditorNumber 审核人工号
     * @param auditTime     审核时间
     */
    void setAuditByNumber(String number, String auditor, String auditorNumber, Date auditTime);

    /**
     * 分页查询功能
     *
     * @param currentPage            当前页面
     * @param pageSize               页面显示个数
     * @param patientBackInformation 患者退血信息
     * @return 返回分页查询结果
     */
    IPage<PatientBackInformation> getPage(int currentPage, int pageSize, PatientBackInformation patientBackInformation);

    /**
     * 分页查询功能
     *
     * @param currentPage                当前页面
     * @param pageSize                   页面显示个数
     * @param patientBackInformationList 患者退血信息
     * @return 返回分页查询结果
     */
    IPage<PatientBackInformation> getPageIn(int currentPage, int pageSize, List<PatientBackInformation> patientBackInformationList);

    /**
     * 根据编号批量下载选中数据
     *
     * @param response 请求
     * @param ids      编号列表
     * @throws IOException 异常
     */
    void batchDownload(HttpServletResponse response, ArrayList<Long> ids) throws IOException;

    /**
     * 根据编号批量下载选中数据
     *
     * @param response 请求
     * @param ids      编号列表
     * @throws IOException 异常
     */
    void batchDownloadIn(HttpServletResponse response, ArrayList<Long> ids) throws IOException;

}
